Skip to content

refactor(governance,ci): converge report schema, harden CI pipeline, sequence modernization#7

Merged
AGIBuild merged 1 commit into
mainfrom
improvement/governance-ci-modernization
Mar 15, 2026
Merged

refactor(governance,ci): converge report schema, harden CI pipeline, sequence modernization#7
AGIBuild merged 1 commit into
mainfrom
improvement/governance-ci-modernization

Conversation

@Hongwei-MB
Copy link
Copy Markdown
Collaborator

Summary

  • Governance closeout: Retire TransitionGateDiagnosticEntry, emit single GovernanceFailure-based failures array, validate transition-gate parity against Ci transitive closure, simplify Ci direct dependencies
  • CI reliability & security: Replace force-push badge publishing with safe fetch-checkout-push flow; add commitSha and workflowRunId verification in release manifest checks
  • CI performance: Introduce CiMatrix target for lightweight cross-platform validation; unify NuGet cache key to packages.lock.json hash across all workflows
  • Modernization sequencing: Establish execution order (runtime-architecture-decompositionconfiguration-interface-error-modernization); sync all OpenSpec artifacts with implementation state

Test plan

  • openspec validate --all --strict passes
  • All 2005 unit tests pass (dotnet test)
  • ./build.sh --target CiMatrix --configuration Release succeeds locally
  • CI workflow passes on this PR

Made with Cursor

…sequence modernization

Phase 1 - Governance closeout:
- Retire TransitionGateDiagnosticEntry; emit single GovernanceFailure-based failures array
- Validate transition-gate parity against Ci transitive closure instead of direct edges
- Simplify Ci target DependsOn to high-level orchestration targets

Phase 2 - CI reliability & security:
- Replace force-push badge publishing with safe fetch-checkout-push flow
- Add commitSha and workflowRunId verification in release manifest checks

Phase 3 - CI performance & signals:
- Introduce CiMatrix target for lightweight cross-platform validation
- Unify NuGet cache key across ci.yml and codeql.yml to packages.lock.json hash

Phase 4 - Modernization sequencing:
- Establish execution order: runtime-architecture-decomposition before
  configuration-interface-error-modernization
- Sync all OpenSpec artifacts (proposal, design, tasks, specs) with implementation state

Made-with: Cursor
@AGIBuild AGIBuild merged commit ebfcd56 into main Mar 15, 2026
12 checks passed
@Hongwei-MB Hongwei-MB deleted the improvement/governance-ci-modernization branch April 5, 2026 07:21
Hongwei-MB added a commit that referenced this pull request Apr 26, 2026
…PORTANT)

Pre-implementation audit of T6–T10 surfaced several issues that would
prevent T6 from shipping a green commit as written:

BLOCKERS (5):
  B1. T6 + T7 merged. T6's smoke test uses WKWebViewConfiguration.Create()
      and `new WKWebView(config)`, but Configuration was a T7 deliverable.
      Apple's `initWithFrame:configuration:` requires the config object to
      instantiate WKWebView, so the three wrappers must land WITH T6 in
      one commit. Old T7 marked SUPERSEDED with example code preserved.
  B2. T7 example called Libobjc.void_objc_msgSend_bool — does not exist.
      Fixed inline to use the existing
      `void_objc_msgSend(handle, sel, value ? 1 : 0)` overload.
  B3. T7 example used `base(NewInstance())` — wrong arity. NSObject ctor
      is `(IntPtr handle, bool owns)`. Fixed to `base(NewInstance(), owns: true)`.
  B4. SetMagnification(double, CGPoint) deleted (YAGNI). The .mm shim has
      no evidence of `setMagnification:centeredAtPoint:` being used; also
      removes the need to vendor CGPoint in Phase 2. Add in Phase 4 with
      proper Apple-API research + main-thread test infra when an actual
      adapter consumer appears.
  B5. NSURLResponse vendored inside T10. T10's
      WKURLSchemeTask.DidReceiveResponse(NSURLResponse) referenced an
      un-vendored Foundation type. New T10 Step 0 vendors
      Macios/Interop/Foundation/NSURLResponse.cs from same Avalonia SHA
      as the T4 batch. Phase 1 exit gate is NOT reopened — file lands in
      T10's commit alongside the WebKit task surface.

IMPORTANTS (4):
  I1. T6 Step 2 method list trimmed to shim-proven members. Deleted
      EstimatedProgress, IsHidden/Hidden setter (not in WkWebViewShim.mm),
      consistent with Phase 2 goal of replacing existing .mm surface only.
  I2. Main-thread dispatch (WebKit UI types must be on main thread):
      DEFERRED. Documented as a known watch-item; if xUnit smoke flakes,
      add helper in follow-up.
  I3. WKHTTPCookieStore renamed + relocated. Old plan said
      Foundation/NSHTTPCookieStore.cs — Apple has no such class
      (NSHTTPCookieStorage is unrelated). Renamed to
      Macios/Interop/WebKit/WKHTTPCookieStore.cs to match WebKit reality.
      NSHTTPCookie value type stays in Foundation/.
  I4. T9 Step 1.5 added documenting the BlockLiteral + [UnmanagedCallersOnly]
      + GCHandle trampoline pattern used to bridge Apple async APIs to
      managed Task<T>. References existing
      MacOSWebViewAdapter.PInvoke.cs cookie trampolines as canonical.

T8 unchanged. T9 numbering preserved (Step 1.5 inserted between 1 and 2).
T10 numbering preserved (Step 0 prepended).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants